# -*- coding: utf-8 -*-
"""
@Time ： 2021/5/7 20:33
@Auth ： Mr. royalday 2487625775
@Company ：XXX
@Function ：请输入模块功能描述
"""
from django import forms
from web import models
from web.forms.bootstrap import BootStrapForm


class WikiModelForm(BootStrapForm, forms.ModelForm):
    """
    wiki的modelform
    """

    class Meta:
        model = models.Wiki
        exclude = ['project', 'depth']

    def __init__(self, request, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 找到想要的字段把他绑定到显示的数据重置
        # 数据 = 去数据库中获取 当前项目所有的wiki标题
        # 创建列表，保存所有文章
        total_data_list = [("", "请选择上级项目！")]

        # 自定义父文章只能显示当前项目下的所有文章
        data_list = models.Wiki.objects.filter(project=request.tracer.project).values_list('id', 'title').order_by(
            'depth', 'id')
        total_data_list.extend(data_list)

        # 编辑时过滤文章列表中的当前wiki文档，防止自己选自己为父文章
        # 编辑是，请求中带上当前wiki的id
        wiki_id = request.tracer.project.wiki_id

        # 判断请求中wiki_id字段是否有值
        if request.wiki_method == "edit" and wiki_id:
            # 创建父文章列表，保存所有可能是父文章的wiki记录并设置默认的父文章选项，即空的选项
            # 循环，父文章过滤当前Wiki
            part_data_list = []
            for parent_wiki_id in total_data_list:
                if wiki_id != parent_wiki_id[0]:
                    part_data_list.append(parent_wiki_id)
            self.fields['parent'].choices = part_data_list
        else:
            self.fields['parent'].choices = total_data_list
